Secure multiplexed routing

ABSTRACT

Methods and systems for managing data transmissions. The methods disclosed herein may involve receiving requests for a first and a second service, and routing communications with the second service through the first service without requiring the firewall to be reconfigured to allow communications with the second service.

BACKGROUND

This application is a continuation of U.S. patent application Ser. No. 16/558,485, filed Sep. 3, 2019, which is hereby incorporated by reference herein its entirety.

TECHNICAL FIELD

Embodiments described herein relate generally to methods and systems for managing data transmissions and more specifically to securely routing data transmissions.

“Firewalls” are technological measures used to prevent unauthorized communications between computers on different computer networks. Some firewalls require configuration to permit communications between computers on different computer networks; these configurations are colloquially referred to as “holes” in the firewall, continuing the analogy.

Organizations typically want to minimize the number of holes they create in their firewalls—each hole reduces organizational security, requires administrator time and effort, etc. However, the introduction of certain services or vendor products to a network may require reconfiguring the firewall to allow for multiple endpoints or services. This problem is magnified when the services or products are controlled by the third party, who typically does not have permission to manage their customer's firewall.

This at the very least inconveniences the service provider or vendor, as they have to take the time to instruct their client to modify their firewall. The client then has to expend resources to make the required modifications to allow for subsequent data transmissions, assuming they agree to do so. In some cases, the client may have to seek and obtain internal and/or regulatory approval to make the required change.

A need exists, therefore, for more effective systems and methods for managing data transmissions.

SUMMARY

This summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description section. This summary is not intended to identify or exclude key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.

In one aspect, embodiments relate to a method of managing data transmissions. The method includes receiving a request for a first service at a router, wherein the request for the first service originates inside a firewall and the first service executes outside the firewall; receiving a request for a second service at the router, wherein the request for the second service originates inside the firewall and the second service executes outside the firewall; and routing, using the router, communications with the second service through the first service without requiring the firewall to be reconfigured to allow the communications with the second service.

In some embodiments, communications for the first service and the communications for the second service are transport layer security (TLS) communications. In some embodiments, each communication comprises a server name indication (SNI) field, and the SNI field of each communication specifies the second service.

In some embodiments, the router is a load balancer.

In some embodiments, the communications for the second service are routed without decryption.

In some embodiments, the second service is a cloud storage service. In some embodiments, the cloud storage service is specified in either a host header or a URL associated with the request for the second service.

According to another aspect, embodiments relate to a system for managing data transmissions. The system includes an interface for at least receiving: a request for a first service at a router, wherein the request for the first service originates inside a firewall and the first service executes outside the firewall, and a request for a second service at the router, wherein the request for the second service originates inside the firewall and the second service executes outside the firewall; and a router configured to route communications with the second service through the first service without requiring the firewall to be configured to allow the communications with the second service.

In some embodiments, the communications for the first service and the communications for the second service are transport layer security (TLS) communications. In some embodiments, each communication comprises a server name indication (SNI) field, and the SNI field of each communication specifies the second service.

In some embodiments, the router is a load balancer.

In some embodiments, the communications for the second service are routed without decryption.

In some embodiments, the second service is a cloud storage service. In some embodiments, the cloud storage service is specified in either a host header or a URL associated with the request for the second service.

According to yet another aspect, embodiments relate to a method for routing communications without requiring firewall configuration. The method includes receiving a transport layer security (TLS) communication at a router, the communication comprising a server name indication (SNI) field, wherein the TLS communication originates inside a firewall and the router is outside the firewall; and routing, using the router, the TLS communication to a destination specified in the SNI field.

In some embodiments, the destination specified refers to a backend service.

In some embodiments, the SNI field multiplexes a plurality of platform services via the router.

In some embodiments, the TLS communication is routed without decryption.

In some embodiments, the destination refers to a cloud storage service.

In some embodiments, receiving the TLS communication includes intercepting the TLS communication, and the method further includes validating the cloud storage service.

BRIEF DESCRIPTION OF DRAWINGS

Non-limiting and non-exhaustive embodiments of this disclosure are described with reference to the following figures, wherein like reference numerals refer to like parts throughout the various views unless otherwise specified.

FIGS. 1A and B illustrate exemplary network diagrams in which a client would be required to reconfigure their firewall to accommodate a new service;

FIG. 2 illustrates an exemplary network diagram in accordance with one embodiment;

FIG. 3 illustrates an exemplary handshake process related to the diagram of FIG. 2 in accordance with one embodiment.

FIG. 4 illustrates an exemplary network diagram indicating potential security flaws associated with existing network configurations;

FIG. 5 illustrates a proxying workflow to address the potential security flaws of FIG. 4 in accordance with one embodiment;

FIG. 6 illustrates an exemplary handshake process associated with the proxying workflow of FIG. 5 in accordance with one embodiment;

FIG. 7 illustrates a system for managing data transmissions in accordance with one embodiment;

FIG. 8 depicts a flowchart of a method of managing data transmissions in accordance with one embodiment; and

FIG. 9 depicts a flowchart of a method for routing communications without requiring firewall configuration in accordance with one embodiment.

DETAILED DESCRIPTION

Various embodiments are described more fully below with reference to the accompanying drawings, which form a part hereof, and which show specific exemplary embodiments. However, the concepts of the present disclosure may be implemented in many different forms and should not be construed as limited to the embodiments set forth herein; rather, these embodiments are provided as part of a thorough and complete disclosure, to fully convey the scope of the concepts, techniques and implementations of the present disclosure to those skilled in the art. Embodiments may be practiced as methods, systems or devices. Accordingly, embodiments may take the form of a hardware implementation, an entirely software implementation or an implementation combining software and hardware aspects. The following detailed description is, therefore, not to be taken in a limiting sense.

Reference in the specification to “one embodiment” or to “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiments is included in at least one example implementation or technique in accordance with the present disclosure. The appearances of the phrase “in one embodiment” in various places in the specification are not necessarily all referring to the same embodiment. The appearances of the phrase “in some embodiments” in various places in the specification are not necessarily all referring to the same embodiments.

Some portions of the description that follow are presented in terms of symbolic representations of operations on non-transient signals stored within a computer memory. These descriptions and representations are used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. Such operations typically require physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical, magnetic or optical signals capable of being stored, transferred, combined, compared and otherwise manipulated. It is convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like. Furthermore, it is also convenient at times, to refer to certain arrangements of steps requiring physical manipulations of physical quantities as modules or code devices, without loss of generality.

However, all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the following discussion, it is appreciated that throughout the description, discussions utilizing terms such as “processing” or “computing” or “calculating” or “determining” or “displaying” or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system memories or registers or other such information storage, transmission or display devices. Portions of the present disclosure include processes and instructions that may be embodied in software, firmware or hardware, and when embodied in software, may be downloaded to reside on and be operated from different platforms used by a variety of operating systems.

The present disclosure also relates to an apparatus for performing the operations herein. This apparatus may be specially constructed for the required purposes, or it may comprise a general-purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a computer readable storage medium, such as, but is not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, application specific integrated circuits (ASICs), or any type of media suitable for storing electronic instructions, and each may be coupled to a computer system bus. Furthermore, the computers referred to in the specification may include a single processor or may be architectures employing multiple processor designs for increased computing capability.

The processes and displays presented herein are not inherently related to any particular computer or other apparatus. Various general-purpose systems may also be used with programs in accordance with the teachings herein, or it may prove convenient to construct more specialized apparatus to perform one or more method steps. The structure for a variety of these systems is discussed in the description below. In addition, any particular programming language that is sufficient for achieving the techniques and implementations of the present disclosure may be used. A variety of programming languages may be used to implement the present disclosure as discussed herein.

In addition, the language used in the specification has been principally selected for readability and instructional purposes and may not have been selected to delineate or circumscribe the disclosed subject matter. Accordingly, the present disclosure is intended to be illustrative, and not limiting, of the scope of the concepts discussed herein.

Even though servers are typically designated by a single IP address, they may actually be hosting thousands of different domain names. To address this problem, website queries in the 1990s added a host field that tells a server which of the domains that it hosts is the intended recipient for the query. This proved to be an important advance for HTTP.

In 2003, Server Name Indication (SNI) was introduced as an extension to the Transport Layer Security (TLS) protocol to allow clients to identify the host they are attempting to connect to as part of the handshake process. Specifically, SNI is a header in the TLS protocol that allows a TLS request to specify the desired host's name. This enables a server to host several websites or services on the same network address or port, akin to a web server that that hosts multiple domains at the same IP address.

In order to provide the name of the server of interest, clients could use an extension of type “server_name” in the initial step of the handshake process. In fact, RFC 3546 recommended that clients include an extension of type “server_name” in the “Client Hello” message whenever they attempt to locate a server by a supported name type. A server that receives a message containing the “server_name” extension may use the data contained in the extension to select the appropriate SSL certificate to return to the client.

As discussed above, clients are at the very least inconvenienced when required by service providers or vendors to reconfigure their firewall. These clients may need to modify their firewall to allow for new or otherwise previously non-allowed endpoints, which are typically defined by a combination of a host name and an IP address. Occasionally, an endpoint is further defined by a port such as a TCP port.

To address this problem, Applicant has implemented SNI routing techniques in the realm of data transmission to multiplex multiple platform services via a single routing service. The results are systems and methods that can route new or otherwise previously unconfigured services via an existing backend service.

Embodiments of the present invention achieve another benefit in that the systems and methods described herein know which endpoint (e.g., an API endpoint) is of interest without requiring any decryption of the messages intended for that endpoint. This improves connection security and transmission speed, as the messages can be routed on, e.g., a byte-by-byte basis, without decrypting the messages prior to routing.

Accordingly, the systems and methods described herein may multiplex a plurality of services to multiple endpoints from a single backend service. These techniques may be used for transmitting data to various virtual machines hosted in cloud storage services such as AMAZON S3 and other types of services whether available now or created hereafter.

In a typical client-vendor scenario, a client may be given the following documentation when setting up a vendor product to use some vendor service:

TABLE 1 Vendor Documentation Data type Region Destination Port Agent messages and beacons United States endpoint.ingress.vendor.com 443 Canada ca.endpoint.ingress.vendor.com 443 Europe eu.endpoint.ingress.vendor.com 443 Japan ap.endpoint.ingress.vendor.com 443 Australia au.endpoint.ingress.vendor.com 443 Agent file uploads for United States s3.amazonaws.com 443 collection and updated downloads Canada s3.ca-central-1.amazonaws.com 443 Europe s3.eu-central-1.amazonaws.com 443 Japan s3.ap-northeast-1.amazonaws.com 443 Australia s3-ap.southeast-2.amazonaws.com 443

The “Agent messages and beacons” data type represent vendor command and control protocols. This data type may specify that an agent beacons periodically, essentially as a check-in. The messages aspect specifies that small messages (e.g., less than 256 KB) can go through this pipeline to specify events, such as when a user logs into their laptop.

The “Agent file uploads for collection and update downloads” data type concern larger collections. These may relate to, for example, collecting data specifying applications installed on a device.

Table 1 also includes a list of domain names, where each domain name may be backed by several IP addresses, as well as the involved ports. This data may be relevant for clients when configuring their firewalls to enable them to use the service(s) specified in the “Destination” column. However, a client would therefore have to reconfigure their firewall to open the specified port (i.e., port 443) to allow the service.

The “Agent file upload . . . ” portion of Table 1 may relate to exemplary cloud storage services (e.g., AMAZON S3). These are endpoints that clients may be hesitant to permit through their firewalls as these hosts may be associated with malware or other malicious software in addition to legitimate software applications and services.

FIG. 1A illustrates an exemplary network diagram 100 a based on Table 1, above. Specifically, FIG. 1 illustrates a client 102 behind a firewall 104. In this scenario, the internet targets may be TCP endpoint.ingress.vendor.com:443 and TCP s3.amazonaws.com:443. These endpoints are shown as endpoint-ingress-app 106, which is managed by a load balancer 108, and an S3 endpoint 110.

FIG. 1A illustrates the firewall 104 configured to allow both endpoints 106 and 110. However, if the client 102 needs to add a new public facing service known as TCP bootstrap (e.g., at the instruction of a vendor), the client 102 would need to configure a new target permitted through the firewall: TCP boostrap.vendor.com:443.

FIG. 1B illustrates an updated network diagram 100 b that illustrates this new target. As illustrated, the firewall 104 would have to be updated, as the firewall 104 does not initially allow the bootstrap-service 112 as indicated by “X” 114.

As discussed previously, this may inconvenience both the vendor and the client 102. The vendor would have to, for example, call or email the client 102 to instruct them to update their firewall 104. This is time consuming for the vendor, as the vendor may have to communicate instructions to potentially hundreds of clients.

Additionally, there is no guarantee that the client 102 would receive or actually even read this email, much less follow the instructions. If they fail to review the instructions (or fail to act on the instructions), future services may fail.

Even if the client 102 intended to comply with the instructions, they may have to follow certain internal procedures such as submitting a request to their IT department to configure the firewall 104. The client 102 may also have to ensure they comply with any regulatory requirements in adjusting their firewall 104.

Accordingly, the systems and methods described herein overcome these problems by using SNI-based routing techniques to transparently route to a variety of endpoints without modifying any existing code or services. That is, the systems and methods herein do not need to add a particular service to, for example, perform file transfer procedures. Rather, agents can use the SNI header to communicate with the desired service through an SNI-based router.

FIG. 2 illustrates a network diagram 200 in accordance with one embodiment. The network diagram 200 of FIG. 2 addresses the above disadvantages, as the diagram 200 illustrates the use of SNI-routing techniques so that a client does not need to reconfigure their firewall.

FIG. 2 illustrates a client 202 in operable connectivity with firewall 204. A data transmission 206 directed to “endpoint.ingress.vendor.com” may specify one of a variety of endpoints such as endpoint.ingress.vendor.com, bootstrap. endpoint.ingress.vendor.com, and storage.endpoint.ingress.vendor.com in one or more fields of the transmission, such as the SNI field discussed above. In reality there may be many more domains to be communicated with through the firewall. The network diagram also shows a load balancer 208 and an SNI router 210.

The endpoint-ingress.app 212 may execute on SNI router 210 and process inbound communications. The self-directing arrow indicates that this endpoint 212 can service requests to “endpoint.ingress” and that no routing has to occur. In other words, any SNI extension or header addressing “endpoint.ingress” is received and serviced by this endpoint 212.

FIG. 2 also shows the bootstrap-service 214 and the S3 service 216 in communication with the endpoint-ingress.app 212. The endpoint-ingress.app 212 is configured to route messages designating these services to these endpoints. Because endpoint.ingress.vendor.com and bootstrap.endpoint.ingress.vendor.com share the same load balancer 208, those DNS records will resolve to the same IPs. Accordingly, customers need not update their firewall rules to permit communications with bootstrap. endpoint.ingress.vendor.com, as communications to endpoint.ingress designating bootstrap in the SNI field will be processed by the router 210 and forwarded to bootstrap-service 214.

FIG. 3 illustrates an exemplary handshake process 300 related to the diagram 200 of FIG. 2. First, a message comes in from a client (e.g., “Client Hello” to endpoint-ingress designating “bootstrap. endpoint.ingress.vendor.com” for communication) and is communicated to the load balancer (LB). In this case, bootsrap.endpoint.ingress.vendor.com is the inbound SNI header value.

The LB then establishes a TCP connection to endpoint-ingress-app, which consults a map file to determine how to direct the inbound communication. For example, the map file may specify a service for receiving the message given a particular designated domain. This routing may utilize DNS.

As seen in FIG. 3, bootstrap.endpoint.ingress.vendor may be mapped to bootstrap.insight.vendor.com by endpoint-ingress-app, which then forwards the TLS Client Hello originating with the client to the bootstrap-service at boostrap.endpoint.ingress.rapid7.com. The bootstrap-service may receive the communication and, in response, provide the certificate for bootstrap.endpoint.ingress.vendor.com in a TLS Hello message. As can be deduced from the above discussion and FIG. 3, endpoint-ingress-app does not provide a response but only acts as a router. However, the returned certificate via endpoint-ingress-app is for bootsrap.endpoint.ingress.vendor.com, which is what the client originally requested.

As discussed above, clients are often hesitant to allow their firewalls to accommodate third party cloud storage services without restrictions. This often is because cloud storage services are associated with or otherwise enable the spread of malware or other malicious software. Specifically, cloud storage services are often leveraged by threat actors as a data storage medium, thereby allowing the cheap and fast uploading of sensitive user data from compromised computers.

Some product vendors may be invested in the use of these cloud storage services, however, and are therefore hesitant to stop using them entirely. These product vendors ensure that only their designated buckets can be leveraged and then rely on the buckets' access control lists to ensure proper security.

This potential security problem is illustrated in FIG. 4. Network diagram 400 illustrates both malware 402 and a legitimate agent 404 executing on a customer asset 406. That malware 402 may, for example, gather sensitive information related to one or more users associated with the customer. Similarly, the agent 404 may be authorized to gather certain agent data from the customer asset 406, and store this data on a cloud storage service 408 for later retrieval by vendor 410.

If a customer wanted to use the agent 404, they would have to whitelist the cloud storage service 408. Having done so, malware 402 could also access the cloud storage service 408 through the customer's firewall and other measures, storing information for later retrieval by the attacker 412.

The systems and methods described herein overcome this problem by intercepting client-side requests to the cloud storage service, validating (or rejecting) the requested bucket within the cloud storage service, and thus ensuring that only pre-approved buckets can be requested. The systems and methods described herein may use a host header or URL segment to specify the bucket and an intermediary to decode the request before routing and thereby facilitating the connection.

FIG. 5 illustrates a proxying workflow 500 in accordance with one embodiment. Specifically, FIG. 5 illustrates a workflow 500 using S3 proxying. As in previous figures, FIG. 5 illustrates a client 502 in operable connectivity with a firewall 504, a transmitted message 506, load balancer 508, and an SNI-based router 510.

From the client's perspective, they issue a request to https://storage.endpoint.ingress.vendor.com. That is, they would not issue a request to https://s3.amazonaws.com. Therefore, the client 502 would not observe or need to permit traffic to the S3 service 514. After handling by the load balancer 508, the SNI router 510 receives the request and parses the SNI header in the request to identify that the client 502 wants to communicate with storage.endpoint.ingress.vendor.com, and maps this domain to endpoint-ingress.app 512. Endpoint-ingress app 512 in turn routes this communication to S3 service 514 for storage after validating the bucket.

FIG. 6 illustrates an exemplary handshake process 600 corresponding to the proxying workflow 500 of FIG. 5 in accordance with one embodiment. That is, this handshake process 600 begins with a client message or request that specifies storage.endpoint.ingress.vendor.com in the SNI header. The load balancer then establishes a TCP connection with endpoint-ingress.app, which validates the appropriate bucket associated with the vendor and returns the SSL certificate for the bucket associated with the requested host in the TLS Server Hello message. Subsequent PUT commands transmits data for storage in the cloud.

Endpoint-ingress.app receives these transmissions from the client via the load balancer, and then performs the bucket validation step to ensure that only vendor-approved buckets are requested. The S3 service can respond and provide the appropriate certificate for s3.amazonaws.com) which is used by endpoint-ingress.app to store data in S3.

FIG. 7 illustrates a system 700 for managing data transmissions in accordance with one embodiment. The system 700 includes a user device 702 executing a user interface 704 for presentation to one or more users 706 such as a client requesting some service.

The user device 702 may be any hardware device capable of executing the user interface 704. The user device 702 may be configured as a laptop, PC, tablet, mobile device, or the like. The exact configuration of the user device 702 may vary as long as it can execute and present the user interface 704 to the user 706. The user interface 704 may allow the user 706 to request services and associated functionality, as well as review associated services and functionality provided by the requested services.

The user 706 may include an employee of a client tasked with managing an organization's network. This management may require the user 706 to access certain services associated with one or more vendors.

The user device 702 may be in operable communication with one or more processors 708. The processor(s) 708 may be any hardware device capable of executing instructions stored on memory 710 to accomplish the objectives of the various embodiments described herein. The processor(s) 708 may be implemented as software executing on a microprocessor, a field programmable gate array (FPGA), an application-specific integrated circuit (ASIC), or another similar device whether available now or invented hereafter.

In some embodiments, such as those relying on one or more ASICs, the functionality described as being provided in part via software may instead be configured into the design of the ASICs and, as such, the associated software may be omitted. The processor(s) 708 may be configured as part of the user device 702 on which the user interface 704 executes, such as a laptop, or may be located on a different computing device, perhaps at some remote location.

The processor 708 may execute instructions stored on memory 710 to provide various modules to accomplish the objectives of the various embodiments described herein. Specifically, the processor 708 may execute or otherwise include an interface 712 and a pre-processing module 714.

The memory 710 may be L1, L2, or L3 cache or RAM memory configurations. The memory 710 may include non-volatile memory such as flash memory, EPROM, EEPROM, ROM, and PROM, or volatile memory such as static or dynamic RAM, as discussed above. The exact configuration/type of memory 710 may of course vary as long as instructions for managing data transmissions or routing communications without requiring firewall configuration can be executed by the processor 708 to accomplish the objectives of various embodiments described herein.

The interface 712 may be in communication with or otherwise receive service requests from the user 706. The interface 712 may also receive any appropriate information from the requested services, such as certificates.

The pre-processing module 714 may perform any required pre-processing steps on the received requests. For example, these steps may include parsing any data associated with the service requests, as well as analyzing the headers or URLs associated with the received service request(s). In performing these steps, the processor 708 may rely on any appropriate data stored in one or more database(s) 716. This may include data associated with the requested services, for example.

The router 718 may implement the SNI routing techniques discussed above to handle received requests. For example, the interface 712 may receive at least a request for a first service and a request for a second service. These requests may be passed to the router 718. Accordingly, and in accordance with the above discussions, the requests for the first and second services originate inside a firewall and the first and second services execute outside the firewall.

The first and second services 720 and 722 may be accessible over one or more networks 724. The network(s) 724 may link the various assets and organizations with various types of network connections. The network(s) 724 may be comprised of, or may interface to, any one or more of the Internet, an intranet, a Personal Area Network (PAN), a Local Area Network (LAN), a Wide Area Network (WAN), a Metropolitan Area Network (MAN), a storage area network (SAN), a frame relay connection, an Advanced Intelligent Network (AIN) connection, a synchronous optical network (SONET) connection, a digital T1, T3, E1, or E3 line, a Digital Data Service (DDS) connection, a Digital Subscriber Line (DSL) connection, an Ethernet connection, an Integrated Services Digital Network (ISDN) line, a dial-up port such as a V.90, a V.34, or a V.34analog modem connection, a cable modem, an Asynchronous Transfer Mode (ATM) connection, a Fiber Distributed Data Interface (FDDI) connection, a Copper Distributed Data Interface (CDDI) connection, or an optical/DWDM network.

The network(s) 724 may also comprise, include, or interface to any one or more of a Wireless Application Protocol (WAP) link, a Wi-Fi link, a microwave link, a General Packet Radio Service (GPRS) link, a Global System for Mobile Communication G(SM) link, a Code Division Multiple Access (CDMA) link, or a Time Division Multiple access (TDMA) link such as a cellular phone channel, a Global Positioning System (GPS) link, a cellular digital packet data (CDPD) link, a Research in Motion, Limited (RIM) duplex paging type device, a Bluetooth radio link, or an IEEE 802.11-based link.

In accordance with the above discussions, the router 718 may route communications with the second service through the first service. Accordingly, clients are not required to reconfigure their firewall (not shown).

FIG. 8 depicts a flowchart of a method 800 of managing data transmissions in accordance with one embodiment. Step 802 involves receiving a request for a first service at a router, wherein the request for the first service originates inside a firewall and the first service executes outside the firewall.

Step 804 involves receiving a request for a second service at the router, wherein the request for the second service originates inside the firewall and the second service executes outside the firewall.

In some embodiments, the second service may be a cloud storage service. The cloud storage may be specified in either a host header or a URL associated with the request for the second service.

Step 806 involves routing, using the router, communications with the second service through the first service without requiring the firewall to be reconfigured to allow the communications with the second service. The communications for the first service and the communications for the second service may be transport layer security communications, for example. As discussed above, each of these communications may comprise an SNI field, and the SNI field of each communication may specify the second service although the communications themselves are addressed to the first service.

The routing may include byte-by-byte routing. That is, the routing may be done without decryption.

FIG. 9 depicts a flowchart of a method 900 for routing communications without requiring firewall configuration in accordance with one embodiment. Step 902 involves receiving a transport layer security (TLS) communication at a router, the communication comprising a server name indication (SNI) field, wherein the TLS communication originates inside a firewall and the router is outside the firewall.

In some embodiments, receiving the TLS communication may involve intercepting the TLS communication. In these situations, the method may further include validating the service (e.g., a cloud storage service).

Step 904 involves routing, using the router, the TLS communication to a destination specified in the SNI field. The specified destination may refer to a backend service or a cloud storage service, for example. In some embodiments, the SM field may multiplex a plurality of platform services via the router.

As in method 800, the TLS communication may be routed using byte-by-byte routing. That is, the TLS communication may be routed without decryption.

The methods, systems, and devices discussed above are examples. Various configurations may omit, substitute, or add various procedures or components as appropriate. For instance, in alternative configurations, the methods may be performed in an order different from that described, and that various steps may be added, omitted, or combined. Also, features described with respect to certain configurations may be combined in various other configurations. Different aspects and elements of the configurations may be combined in a similar manner. Also, technology evolves and, thus, many of the elements are examples and do not limit the scope of the disclosure or claims.

Embodiments of the present disclosure, for example, are described above with reference to block diagrams and/or operational illustrations of methods, systems, and computer program products according to embodiments of the present disclosure. The functions/acts noted in the blocks may occur out of the order as shown in any flowchart. For example, two blocks shown in succession may in fact be executed substantially concurrent or the blocks may sometimes be executed in the reverse order, depending upon the functionality/acts involved. Additionally, or alternatively, not all of the blocks shown in any flowchart need to be performed and/or executed. For example, if a given flowchart has five blocks containing functions/acts, it may be the case that only three of the five blocks are performed and/or executed. In this example, any of the three of the five blocks may be performed and/or executed.

A statement that a value exceeds (or is more than) a first threshold value is equivalent to a statement that the value meets or exceeds a second threshold value that is slightly greater than the first threshold value, e.g., the second threshold value being one value higher than the first threshold value in the resolution of a relevant system. A statement that a value is less than (or is within) a first threshold value is equivalent to a statement that the value is less than or equal to a second threshold value that is slightly lower than the first threshold value, e.g., the second threshold value being one value lower than the first threshold value in the resolution of the relevant system.

Specific details are given in the description to provide a thorough understanding of example configurations (including implementations). However, configurations may be practiced without these specific details. For example, well-known circuits, processes, algorithms, structures, and techniques have been shown without unnecessary detail in order to avoid obscuring the configurations. This description provides example configurations only, and does not limit the scope, applicability, or configurations of the claims. Rather, the preceding description of the configurations will provide those skilled in the art with an enabling description for implementing described techniques. Various changes may be made in the function and arrangement of elements without departing from the spirit or scope of the disclosure.

Having described several example configurations, various modifications, alternative constructions, and equivalents may be used without departing from the spirit of the disclosure. For example, the above elements may be components of a larger system, wherein other rules may take precedence over or otherwise modify the application of various implementations or techniques of the present disclosure. Also, a number of steps may be undertaken before, during, or after the above elements are considered.

Having been provided with the description and illustration of the present application, one skilled in the art may envision variations, modifications, and alternate embodiments falling within the general inventive concept discussed in this application that do not depart from the scope of the following claims. 

What is claimed is:
 1. A method, comprising: executing a first service on a router outside a firewall of a computer network, wherein the firewall is configured to allow communications from inside the firewall to the router; receiving, by the first service, a first request from a client inside the firewall directed to a second service outside the firewall and distinct from the router, wherein the firewall is configured to not allow communications from inside the firewall to the second service; returning, by the first service and in response to the first request, a certificate for the second service, wherein the certificate is used by the client to establish a transport layer security (TLS) connection with the first service; receiving, by the first service and through the TLS connection, a second request from the client directed the second service; and routing, by the first service, the second request to the second service.
 2. The method of claim 1, further comprising: performing, by the first service and in response to the first request: establishing another TLS connection between the first service and the second service, wherein the second request is sent to the second service through the other TLS connection.
 3. The method of claim 1, further comprising the first service: multiplexing a plurality of requests for a plurality of different services based on a map file maintained by the first service, wherein the firewall does not allow communications from inside the firewall to the different services.
 4. The method of claim 3, further comprising the first service: determining a service name of the second service based on a server name indication (SNI) field of the first request; and determining the second service from the map file based on the service name.
 5. The method of claim 3, further comprising the first service: sending data indicating the plurality of different services to another client in the computer network, wherein the other client is configured to display a list of the different services via a user interface.
 6. The method of claim 1, further comprising the first service: load balancing requests to the second service among a plurality of service endpoints of the second service.
 7. The method of claim 1, further comprising the first service: receiving a second response for the second request from the second service; and returning the second request to the client through the TLS connection.
 8. The method of claim 1, wherein the second request is routed to the second service without decryption.
 9. The method of claim wherein the second service is a cloud storage service.
 10. The method of claim wherein the cloud storage service is specified in a host header or a URL associated with the second request for the second service.
 11. The method of claim wherein the second request is generated by an agent executing on a machine in the client network to upload data collected from the machine to the cloud storage service.
 12. The method of claim further comprising the first service: validating a storage bucket requested by the second request prior to sending the second request to the cloud storage service.
 13. The method of claim further comprising the first service: validating a storage bucket requested by the second request prior to sending the second request to the cloud storage service.
 14. A system comprising: one or more processors; and a memory coupled to the one or more processors, wherein the memory stores program instructions executable by the one or more processors to: execute a first service on a router outside a firewall of a computer network, wherein the firewall is configured to allow communications from inside the firewall to the router; receive, by the first service, a first request from a client inside the firewall directed to a second service outside the firewall and distinct from the router, wherein the firewall is configured to not allow communications from inside the firewall to the second service; return, by the first service and in response to the first request, a certificate for the second service, wherein the certificate is used by the client to establish a transport layer security (TLS) connection with the first service; receive, by the first service and through the TLS connection, a second request from the client directed the second service; and route, by the first service, the second request to the second service.
 15. The system of claim 14, wherein the first service is configured to: establish another TLS connection between the first service and the second service, wherein the second request is sent to the second service through the other TLS connection.
 16. The system of claim 14, wherein the first service is configured to: multiplex a plurality of requests for a plurality of different services based on a map file maintained by the first service, wherein the firewall does not allow communications from inside the firewall to the different services.
 17. The system of claim 16, wherein the first service is configured to: determine a service name of the second service based on a server name indication (SNI) field of the first request; and determine the second service from the map file based on the service name.
 18. The system of claim 14, wherein the first service is configured to: receive a second response for the second request from the second service; and return the second request to the client through the TLS connection.
 19. The system of claim 14, wherein the first service is configured to route the second request to the second service without decryption.
 20. One or more non-transitory computer-readable media storing program instructions that when executed on one or more processors implement cause the one or more processors to: execute a first service on a router outside a firewall of a computer network, wherein the firewall is configured to allow communications from inside the firewall to the router; receive, by the first service, a first request from a client inside the firewall directed to a second service outside the firewall and distinct from the router, wherein the firewall is configured to not allow communications from inside the firewall to the second service; return, by the first service and in response to the first request, a certificate for the second service, wherein the certificate is used by the client to establish a transport layer security (TLS) connection with the first service; receive, by the first service and through the TLS connection, a second request from the client directed the second service; and route, by the first service, the second request to the second service. 